apply plugin: 'com.android.application'
android {
	compileSdkVersion 29
	buildToolsVersion '29.0.3'
	ndkVersion '21.1.6352462'
	defaultConfig {
		applicationId 'net.minetest.minetest'
		minSdkVersion 16
		targetSdkVersion 29
		versionName "${versionMajor}.${versionMinor}.${versionPatch}"
		versionCode project.versionCode
	}

	Properties props = new Properties()
	props.load(new FileInputStream(file('../local.properties')))

	if (props.getProperty('keystore') != null) {
		signingConfigs {
			release {
				storeFile file(props['keystore'])
				storePassword props['keystore.password']
				keyAlias props['key']
				keyPassword props['key.password']
			}
		}

		buildTypes {
			release {
				minifyEnabled true
				signingConfig signingConfigs.release
			}
		}
	}

	// for multiple APKs
	splits {
		abi {
			enable true
			reset()
			include 'armeabi-v7a', 'arm64-v8a'
		}
	}

	compileOptions {
		sourceCompatibility JavaVersion.VERSION_1_8
		targetCompatibility JavaVersion.VERSION_1_8
	}
}

task prepareAssets() {
	def assetsFolder = "build/assets"
	def projRoot = "../../.."
	def gameToCopy = "minetest_game"

	copy {
		from "${projRoot}/minetest.conf.example", "${projRoot}/README.md" into assetsFolder
	}
	copy {
		from "${projRoot}/doc/lgpl-2.1.txt" into "${assetsFolder}"
	}
	copy {
		from "${projRoot}/builtin" into "${assetsFolder}/builtin"
	}
	/*copy {
		// ToDo: fix Minetest shaders that currently don't work with OpenGL ES
		from "${projRoot}/client/shaders" into "${assetsFolder}/client/shaders"
	}*/
	copy {
		from "../native/deps/Android/Irrlicht/shaders" into "${assetsFolder}/client/shaders/Irrlicht"
	}
	copy {
		from "${projRoot}/fonts" include "*.ttf" into "${assetsFolder}/fonts"
	}
	copy {
		from "${projRoot}/games/${gameToCopy}" into "${assetsFolder}/games/${gameToCopy}"
	}
	/*copy {
		// ToDo: fix broken locales
		from "${projRoot}/po" into "${assetsFolder}/po"
	}*/
	copy {
		from "${projRoot}/textures" into "${assetsFolder}/textures"
	}

	file("${assetsFolder}/.nomedia").text = "";

	task zipAssets(type: Zip) {
		archiveName "Minetest.zip"
		from "${assetsFolder}"
		destinationDir file("src/main/assets")
	}
}

preBuild.dependsOn zipAssets

// Map for the version code that gives each ABI a value.
import com.android.build.OutputFile

def abiCodes = ['armeabi-v7a': 0, 'arm64-v8a': 1]
android.applicationVariants.all { variant ->
	variant.outputs.each {
		output ->
			def abiName = output.getFilter(OutputFile.ABI)
			output.versionCodeOverride = abiCodes.get(abiName, 0) + variant.versionCode
	}
}

dependencies {
	implementation project(':native')
	implementation 'androidx.appcompat:appcompat:1.1.0'
}
